package command;

import org.uc3m.ed.factory.panel.FactoriaPanel;
import org.uc3m.ed.implementacion.Command;
import org.uc3m.ed.interfaz_grafica.ventana.PanelDibujo;
import org.uc3m.ed.interfaz_grafica.ventana.VentanaPrincipal;
import org.uc3m.ed.tad.arbol.ArbolBinario;
import org.uc3m.ed.tad.arbol.IArbolBinarioIterador;


public class CommandInOrden implements Command {

	/* (non-Javadoc)
	 * @see org.uc3m.ed.implementacion.Command#execute()
	 */
	public void execute() {
		try{
			PanelDibujo panel= FactoriaPanel.metodoFactoria();
			String texto = " Resultado del Recorrido en In-Orden\n--------------------------------------------------------\n\n";
			ArbolBinario<Integer,Integer> arbolBinario=(ArbolBinario<Integer,Integer>) panel.getEstructura();
			IArbolBinarioIterador<Integer, Integer> iterador;
			if (arbolBinario!=null)
			{	
				iterador = arbolBinario.inorden();
				while(iterador.haySiguiente())
					texto+="Elemento: "+iterador.siguiente().toString()+".\n\n";
				VentanaPrincipal.getConsola().escribirTextoInformacion(texto);
			}
			else
				VentanaPrincipal.getConsola().escribirTextoError("CLASS::Arbol_Binario::CommandInOrden ERROR::3\n    Debes Crear un Arbol Binario antes de hacer un recorrido");
		}catch(Exception e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Arbol_Binario::CommandInOrden ERROR::2::"+e.toString()+"\n",e.getStackTrace());
		}catch(Error e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Arbol_Binario::CommandInOrden ERROR::1::"+e.toString()+"\n",e.getStackTrace());
		}
		
		
	}

}
